package com.itheima.leetcode.od.b.greedy;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * (B卷,100分)- 组成最大数（Java & JS & Python & C）
 * <p>
 * 题目描述
 * <p>
 * 小组中每位都有一张卡片，卡片上是6位内的正整数，将卡片连起来可以组成多种数字，计算组成的最大数字。
 * <p>
 * 输入描述
 * <p>
 * “,”号分割的多个正整数字符串，不需要考虑非数字异常情况，小组最多25个人。
 * <p>
 * 输出描述
 * <p>
 * 最大的数字字符串
 * <p>
 * 用例
 * <p>
 * 输入	22,221
 * 输出	22221
 * 说明	无
 * <p>
 * 输入	4589,101,41425,9999
 * 输出	9999458941425101
 * 说明	无
 * <p>
 * 题目解析
 * <p>
 * 题解请看华为OD机试 - 数组组成的最小数字_伏城之外的博客-CSDN博客
 * <p>
 * 增加一个测试用例
 * <p>
 * 3,32,321
 */
public class MaxUnion {
    public static void main(String[] args) {
        //处理输入
        /*Scanner in=new Scanner(System.in);
        StringBuilder res_str = new StringBuilder();*/

        String string = "4589,101,41425,9999";

        System.out.println(getResult(string));
    }

    /**
     * 贪心排序
     *
     * @param string
     */
    public static String getResult(String string) {
        String[] arr = string.split(",");
        Arrays.sort(arr, (a, b) -> (b + a).compareTo(a + b));

        return Arrays.stream(arr).collect(Collectors.joining(""));
    }
}